package com.study.design.template.example.bank;

/**
 * 去银行办理业务
 * 1、先取号
 * 2、办理具体业务(不固定，取钱 存钱)
 * 3、评价
 */
public abstract class AbstractBankTemplate {
    /**
     * 取号
     */
    private  void takeNumber(){
        System.out.println("排队取号");
    }

    /***
     * 办理具体业务
     */
    protected abstract  void doProfessionalWork();

    /**
     * 评价
     */
    private void evaluate(){
        System.out.println("评价");
    }
    /**
     * 定义流程
     */
    public final void process() {
        //1、先取号
        this.takeNumber();
        //2、办理具体业务
        doProfessionalWork();
        //3、评价
        this.evaluate();
    }
}
